﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ModeloMagiPack.Entidades;
using DALMagiPack.Funcionalidad;

namespace BLLMagiPack.Managers
{
    public class BLLCuentaBancariaMovimiento
    {
        public CuentaBancariaMovimiento TraerPorMovimiento(int idMovimiento)
        {
            DALMagiPack<CuentaBancariaMovimiento> dal = new DALMagiPack<CuentaBancariaMovimiento>();
            List<Filtro> opciones = new List<Filtro>() { new Filtro() { Columna = NombresColumnas.IdMovimiento, Tipo = TipoFiltro.Equal } };
            CuentaBancariaMovimiento filtro = new CuentaBancariaMovimiento() { IdMovimiento = idMovimiento };

            return dal.Traer(filtro, opciones).FirstOrDefault();
        }

        public bool Pertenece(int idMovimiento, int idCuentaBancaria)
        {
            DALMagiPack<CuentaBancariaMovimiento> dal = new DALMagiPack<CuentaBancariaMovimiento>();
            return dal.Contar(new CuentaBancariaMovimiento() { IdMovimiento = idMovimiento, IdCuentaBancaria = idCuentaBancaria },
                new List<Filtro>() { new Filtro(){ Columna = NombresColumnas.IdMovimiento, Tipo = TipoFiltro.Equal},
                    new Filtro(){ Columna = NombresColumnas.IdCuentaBancaria, Tipo = TipoFiltro.Equal }
                }) > 0;
        }

        public List<Movimiento> FiltrarPertenecientes(List<Movimiento> movimientos, int idCuentaBancaria)
        {
            DALMagiPack<CuentaBancariaMovimiento> dal = new DALMagiPack<CuentaBancariaMovimiento>();
            List<Movimiento> filtrados = new List<Movimiento>();

            foreach (Movimiento item in movimientos)
            {
                int cantidad = dal.Contar(new CuentaBancariaMovimiento() { IdMovimiento = item.IdMovimiento, IdCuentaBancaria = idCuentaBancaria },
                new List<Filtro>() { new Filtro(){ Columna = NombresColumnas.IdMovimiento, Tipo = TipoFiltro.Equal},
                    new Filtro(){ Columna = NombresColumnas.IdCuentaBancaria, Tipo = TipoFiltro.Equal }
                });

                if (cantidad > 0)
                    filtrados.Add(item);
            }

            return filtrados;
        }
    }
}
